package mysql8学习.高级.第17章_其他数据库日志;

/**
 * 6.1写入机制
 * binlog的写入时机也非常简单，事务执行过程中，先把日志写到 binlog cache ，
 * 事务提交的时候，再把binlog cache写到binlog文件中。
 * 因为一个事务的binlog不能被拆开，无论这个事务多大，也要确保一次性写入，
 * 所以系统会给每个线程分配一个块内存作为binlog cache。
 * 我们可以通过binlog_cache_size 参数控制单个线程binlog cache大小，
 * 如果存储内容超过了这个参数，就要暂存到磁盘(Swap)。
 *
 * write(写入缓存)和fsync（刷盘）的时机
 * 可以由参数sync_binlog 控制，默认是0。
 *
 * 为0的时候，表示每次提交事务都只write,由系统自行判断什么时候执行fsync。
 * 虽然性能得到提升，但是机器宕机，page cache里面的bing log会丢失
 *
 * 为了安全起见，可以设置为1，
 * 表示每次提交事务都会执行fsync,就如同redo log刷盘流程一样。
 *
 * 最后还有一种折中方式，可以设置为N(N>1),
 * 表示每次提交事务都write,但累积N个事务后才fsync。
 *
 */
public class F1_二进制日志写入机制 {
}
